Flutter 桌面应用开发的大坑

最近在尝试使用 Flutter 开发桌面应用程序。在这个过程中,遇到一个大坑,直接让我放弃原本核心功能已经实现得差不多的 Flutter 代码库,转而使用 Tauri。

遇到了什么问题?

简单来说,就是 Flutter 对于多窗口的应用程序的支持非常薄弱。

如果不使用第三方的插件只能通过启动多个 Flutter 应用实例并靠传递命令行参数来实现区分不同的窗口,而这种做法我尝试之后发现多实例间的通信处理很麻烦,子窗口中出现问题也很难 debug。

如果使用了第三方的插件也好不到哪去,我在一番搜索后看到社区里有 desktop_multi_window 这个插件能够在不启动多进程的情况下实现多窗口,但是我在实践后发现这个插件的坑很多:

  1. 在使用 window_manager、dynamic_color 等涉及原生的插件时,需要自己在原生代码中手动为子窗口初始化这些插件
  2. 在启动子窗口后,子窗口的主题不会随系统的主题切换,需要自己手动编写原生代码实现

点此查看原文